package com.rzcode.coinex.kernel.dao.entity;


import com.baomidou.mybatisplus.annotation.TableName;
import com.rzcode.coinex.kernel.common.enums.BooleanEnum;
import com.rzcode.coinex.kernel.common.enums.CoinStateEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "coin")
public class Coin {
    /**
     * 币种名称:不能为空
     */
    private String name;

    /**
     * 中文名称不能为空
     */
    private String nameCn;

    /**
     * 单位不能为空:缩写
     */
    private String unit;

    /**
     * 状态
     */
    private CoinStateEnum status = CoinStateEnum.NORMAL;

    /**
     * 最小提币手续费
     */
    private Double minTxFee;

    /**
     * 对人民币汇率
     * 对人名币的汇率不能为空
     */
    private Double cnyRate;

    /**
     * 最大提币手续费
     */
    private Double maxTxFee;

    /**
     * 美元汇率:对美元的汇率不能为空
     */
    private Double usdRate;

    /**
     * 是否支持rpc接口
     */
    private BooleanEnum enableRpc = BooleanEnum.IS_FALSE;

    /**
     * 排序
     */
    private int sort;

    /**
     * 是否能提币
     */
    private BooleanEnum canWithdraw;

    /**
     * 是否能充币
     */
    private BooleanEnum canRecharge;

    /**
     * 是否能转账
     */
    private BooleanEnum canTransfer = BooleanEnum.IS_TRUE;

    /**
     * 是否能自动提币
     */
    private BooleanEnum canAutoWithdraw;

    /**
     * 提币阈值
     */
    private BigDecimal withdrawThreshold;

    /**
     * 最小提币数量
     */
    private BigDecimal minWithdrawAmount;

    /**
     * 最大提币数量
     */
    private BigDecimal maxWithdrawAmount;

    /**
     * 充币阈值(最小充值数量)
     */
    private BigDecimal minRechargeAmount;


    /**
     * 是否平台币
     */
    private BooleanEnum isPlatformCoin = BooleanEnum.IS_FALSE;

    /**
     * 是否是合法币种
     */
    private Boolean hasLegal = false;

    private BigDecimal allBalance;

    /**
     * 冷钱包地址
     */
    private String coldWalletAddress;

    /**
     * 热钱包地址
     */
    private BigDecimal hotAllBalance;

    private Long blockHeight;

    /**
     * 矿工费
     * 转账时付给矿工的手续费
     */
    private BigDecimal minerFee;

    /**
     * 提币精度
     */
    private int withdrawScale;

    /**
     * 币种资料链接
     */
    private String infoLink;

    /**
     * 币种简介
     */
    private String information;

    /**
     * 账户类型：0：默认  1：EOS类型
     */
    private int accountType;

    /**
     * 充值地址（仅账户类型为EOS类型有效）
     */
    private String depositAddress;
}
